package com.wwm.springcloud.base.common;

/**
 * All rights Reserved, Designed By wanming0522@163.com
 *
 * @version v1.0
 * @author: wwm
 * @date: 2017-12-21 10:01:11
 * @Copyright: ${year} wanming0522@163.com Inc. All rights reserved.
 */
public enum ResultCode
{
    /**
     * 0000 成功
     1 系统级错误
     2 业务级错误
     001 服务模块代码
     001 具体错误代码

     系统级

     000 系统状态相关
     1000001 接口维护中，暂停使用
     1000002 接口停用
     1000003 系统内部异常
     1000004 远程调用异常

     001 参数校验相关
     1001001 缺少系统参数
     1001002 系统参数错误
     1001003 请求方法不存在

     002 系统限制相关
     1002001 未知的请求源
     1002002 被禁止的IP
     1002003 被禁止的APPKEY
     1002004 请求超过限制
     1002005 请求超时

     003 OAuth2.0认证相关
     1003001 错误的请求AppKey
     1003002 AppKey过期
     1003003 该AppKey被冻结
     1003004 该AppKey无请求权限
     1003005 无效的签名
     1003006 token失效

     004 用户状态相关
     1004001 当前用户不存在
     1004002 当前用户被冻结
     1004003 用户密码不正确
     */

    /* 成功状态码 */
    SUCCESS(0000, "成功"),

    /* 000 系统状态相关 */
    SYSTEM_STATUS_SUSPEND(1000001, "接口维护中，暂停使用"),
    SYSTEM_STATUS_STOP(1000002, "接口停用"),
    SYSTEM_STATUS_IN_ERROR(1000003, "系统内部异常"),
    SYSTEM_STATUS_OUT_ERROR(1000004, "远程调用异常"),
    SYSTEM_UNKNOWN_ERROR(1000005, "未知错误"),

    /* 001 参数校验相关 */
    SYSTEM_PARAM_IS_BLANK(1001001, "缺少系统参数"),
    SYSTEM_PARAM_IS_INVALID(1001002, "系统参数错误"),
    SYSTEM_PARAM_METHOD_BLANK(1001003, "请求方法不存在"),

    /* 002 系统限制相关 */
    SYSTEM_LIMIT_UNKNOWN_SOURCE(1002001, "未知的请求源"),
    SYSTEM_LIMIT_FORBID_IP(1002002, "被禁止的IP"),
    SYSTEM_LIMIT_FORBID_APPKEY(1002003, "被禁止的APPKEY"),
    SYSTEM_LIMIT_OVER_QPS(1002004, "请求超过限制"),
    SYSTEM_LIMIT_TIMEOUT(1002005, "请求超时"),

    /* 003 OAuth2.0认证相关 */
    SYSTEM_OAUTH_APPKEY_INVALID(1003001, "错误的请求AppKey"),
    SYSTEM_OAUTH_APPKEY_EXPIRE(1003002, "AppKey过期"),
    SYSTEM_OAUTH_APPKEY_FROZEN(1003003, "该AppKey被冻结"),
    SYSTEM_OAUTH_NO_POWER(1003004, "该AppKey无请求权限"),
    SYSTEM_OAUTH_SIGN_INVALID(1003005, "无效的签名"),
    SYSTEM_OAUTH_TOKEN_INVALID(1003006, "token失效"),

    /* 004 用户状态相关 */
    SYSTEM_USER_NOT_IN(1004001, "当前用户不存在"),
    SYSTEM_USER_IS_FROZEN(1004002, "当前用户被冻结"),
    SYSTEM_USER_PASSWORD_ERROR(1004003, "用户密码不正确");

    private Integer code;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    private String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer code() {
        return this.code;
    }

    public String message() {
        return this.message;
    }

    public static String getMessage(String name) {
        for (ResultCode item : ResultCode.values()) {
            if (item.name().equals(name)) {
                return item.message;
            }
        }
        return name;
    }

    public static Integer getCode(String name) {
        for (ResultCode item : ResultCode.values()) {
            if (item.name().equals(name)) {
                return item.code;
            }
        }
        return null;
    }

    @Override
    public String toString()
    {
        return this.name();
    }
}